# -*- coding: utf-8 -*-
# @FileName : mer.py
# @Author   : zme
# @Time     : 2025-09-04 15:48
# !/usr/bin/env python3
"""
健康食谱推荐系统启动脚本
同时启动主API服务和推荐系统API服务
"""

import subprocess
import sys
import time
import os
from threading import Thread
import numpy
import pandas as pd

def start_main_api():
    """启动主API服务"""
    print("🚀 启动主API服务 (端口8800)...")
    try:
        subprocess.run([sys.executable, "api_post.py"], check=True)
    except KeyboardInterrupt:
        print("❌ 主API服务已停止")
    except Exception as e:
        print(f"❌ 主API服务启动失败: {e}")


def start_recommendation_api():
    """启动推荐系统API服务"""
    print("🚀 启动推荐系统API服务 (端口8801)...")
    try:
        subprocess.run([sys.executable, "recommendation_api.py"], check=True)
    except KeyboardInterrupt:
        print("❌ 推荐系统API服务已停止")
    except Exception as e:
        print(f"❌ 推荐系统API服务启动失败: {e}")


def main():
    """主函数"""
    print("=" * 60)
    print("🍎 健康食谱推荐系统")
    print("=" * 60)
    print()

    # 检查必要文件
    required_files = ["api_post.py", "recommendation_api.py", "tuijianbiaoti.txt"]
    missing_files = [f for f in required_files if not os.path.exists(f)]

    if missing_files:
        print(f"❌ 缺少必要文件: {', '.join(missing_files)}")
        return

    print("✅ 所有必要文件已就绪")
    print()

    try:
        # 创建线程启动两个服务
        main_api_thread = Thread(target=start_main_api, daemon=True)
        recommendation_api_thread = Thread(target=start_recommendation_api, daemon=True)

        # 启动服务
        main_api_thread.start()
        time.sleep(2)  # 等待主API服务启动

        recommendation_api_thread.start()
        time.sleep(2)  # 等待推荐API服务启动

        print("🎉 所有服务启动成功！")
        print()
        print("📖 服务信息:")
        print("   - 主API服务: http://localhost:8800")
        print("   - 推荐系统API: http://localhost:8801")
        print("   - 前端界面: http://localhost:8800 (访问主API地址)")
        print()
        print("💡 使用说明:")
        print("   1. 打开浏览器访问 http://localhost:8800")
        print("   2. 注册/登录账户")
        print("   3. 点击左侧「🍎 食谱推荐」按钮进入推荐系统")
        print("   4. 浏览文章标题，点击「开始阅读」或「❤️」按钮")
        print("   5. 系统会自动学习您的兴趣偏好并个性化推荐")
        print("   6. 点击「兴趣分析」查看个人喜好分布和饼图")
        print("   7. 切换「推荐」、「热门」、「历史」标签浏览不同内容")
        print("   8. 推荐算法支持：协同过滤、内容推荐、热门召回、兴趣衰减")
        print()
        print("按 Ctrl+C 停止所有服务")

        # 保持主线程运行
        while True:
            time.sleep(1)

    except KeyboardInterrupt:
        print("\n🛑 正在停止所有服务...")
        print("✅ 服务已停止")
    except Exception as e:
        print(f"❌ 启动失败: {e}")


if __name__ == "__main__":
    main()
